{"componentChunkName":"component---src-templates-blog-post-js","path":"/JavaScript/[javascript]-자바스크립트-동작원리---실행-컨텍스트/","result":{"data":{"site":{"siteMetadata":{"title":"Hun's Footsteps 🥷","author":"전여훈","siteUrl":"https://jeonyeohun.netlify.app","comment":{"disqusShortName":"","utterances":"jeonyeohun/jeonyeohun.github.io"},"sponsor":{"buyMeACoffeeId":"jeonyeohun"}}},"markdownRemark":{"id":"cfb026fe-0516-50ee-af66-63e5805ad776","excerpt":"콜 스택에는 무엇이 쌓이는 걸까? 자바스크립트 엔진은 메모리 힙과 콜 스택으로 동작한다는 것을 우리는 알고있다. 콜 스택은 자바스크립트 엔진이 실행하고자 하는 함수가 담기지만, 그냥 코드가 담기는 것이 아니다. 함수가 실행되기 위해서는 지역변수, 전역변수와 같은 함수의 실행환경을 알아야 한다. 는 이런 함수의 실행정보를 담는 단위이다. 운영체제에서 프로세스에 대한 정보가 PCB…","html":"<h2 id=\"콜-스택에는-무엇이-쌓이는-걸까\" style=\"position:relative;\"><a href=\"#%EC%BD%9C-%EC%8A%A4%ED%83%9D%EC%97%90%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4-%EC%8C%93%EC%9D%B4%EB%8A%94-%EA%B1%B8%EA%B9%8C\" aria-label=\"콜 스택에는 무엇이 쌓이는 걸까 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>콜 스택에는 무엇이 쌓이는 걸까?</h2>\n<p>자바스크립트 엔진은 메모리 힙과 콜 스택으로 동작한다는 것을 우리는 알고있다. 콜 스택은 자바스크립트 엔진이 실행하고자 하는 함수가 담기지만, 그냥 코드가 담기는 것이 아니다. 함수가 실행되기 위해서는 지역변수, 전역변수와 같은 함수의 실행환경을 알아야 한다.</p>\n<p><code class=\"language-text\">실행 컨텍스트</code>는 이런 함수의 실행정보를 담는 단위이다. 운영체제에서 프로세스에 대한 정보가 PCB에 담겨 관리되는 것을 떠올려보면 유사하다.</p>\n<h2 id=\"실행-컨텍스트의-구성요소\" style=\"position:relative;\"><a href=\"#%EC%8B%A4%ED%96%89-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%9D%98-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C\" aria-label=\"실행 컨텍스트의 구성요소 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>실행 컨텍스트의 구성요소</h2>\n<p>실행 컨텍스트는 아래와 같은 정보들로 구성된다.</p>\n<ol>\n<li>변수, 객체 프로퍼티</li>\n<li>함수 선언</li>\n<li>스코프</li>\n<li>this</li>\n</ol>\n<p>그리고 이 정보들은 <code class=\"language-text\">Variable Object</code>, <code class=\"language-text\">Scope Chain</code>, <code class=\"language-text\">thisValue</code> 세 개의 객체에 담겨 관리된다.</p>\n<h3 id=\"변수-객체-variable-object\" style=\"position:relative;\"><a href=\"#%EB%B3%80%EC%88%98-%EA%B0%9D%EC%B2%B4-variable-object\" aria-label=\"변수 객체 variable object permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>변수 객체 (Variable Object)</h3>\n<p>변수 객체에는 변수와 함수선언에 대한 정보가 담긴다. 이때 전역 실행 컨텍스트의 경우와 함수 실행 컨텍스트의 경우에 따라 변수 객체가 가르키는 값이 조금 달라진다.</p>\n<p>전역 실행 컨테스트의 경우에는 변수객체가 전역 객체를 가르키며 전역함수의 객체와 전역 변수의 값을 가진다.</p>\n<p>함수 실행 컨텍스트의 경우에는 함수의 인자들이 담긴 배열형태의 객체와 내부 함수의 함수 객체, 지역 변수의 값을 가진다.</p>\n<h3 id=\"스코프-체인-scope-chain\" style=\"position:relative;\"><a href=\"#%EC%8A%A4%EC%BD%94%ED%94%84-%EC%B2%B4%EC%9D%B8-scope-chain\" aria-label=\"스코프 체인 scope chain permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>스코프 체인 (Scope Chain)</h3>","frontmatter":{"title":"[JavaScript] 자바스크립트 동작원리 - 실행 컨텍스트","date":"May 22, 2021"}}},"pageContext":{"slug":"/JavaScript/[javascript]-자바스크립트-동작원리---실행-컨텍스트/","previous":{"fields":{"slug":"/JavaScript/EventLoop/"},"frontmatter":{"title":"[JavaScript] 자바스크립트 동작원리 - Web API와 이벤트 루프","category":"JavaScript","draft":false}},"next":{"fields":{"slug":"/Interview/[면접준비]-자바스크립트/"},"frontmatter":{"title":"[면접준비] 자바스크립트","category":"Interview","draft":false}}}},"staticQueryHashes":["2486386679","3128451518"]}